/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package appstudio7i.controladores;

import appstudio7i.modelo.Cliente;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;

/**
 *
 * @author Alfredo Mendieta
 */
public class AdmClientes {
    private ArrayList<Cliente> dbClientes = new ArrayList<Cliente>();
    private String sRutaBD = "clientes.txt";
    //private String sRutaBD = "Clientes.txt";

    public ArrayList<Cliente> inicializarTablaCliente() {
        FileReader fr = null;
        BufferedReader br = null;
        
        try {
            fr = new FileReader(sRutaBD);
            br = new BufferedReader(fr);
            String linea;
            
            Cliente cliente = null;
            while ((linea = br.readLine()) != null) {
                String [] datos = linea.split("#");
                cliente = new Cliente(datos[0], datos[1], datos[2], datos[3], datos[4], datos[5]);
                dbClientes.add(cliente);
            }
            
        } catch (FileNotFoundException e){
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fr) {
                    fr.close();
                } 
            } catch (Exception ee){
                ee.printStackTrace();
            }
        }
        
        return dbClientes;
    }
    
        public int ingresarCliente(Cliente cliente){
        int entrega = 0; // fracaso
        if(existeCliente(cliente) == false){
            if(existeDatosEnBlanco(cliente) == false) {
                dbClientes.add(cliente);
                entrega = 1; // exito
                actualizaTablaCliente();
            }
        }
        return entrega; 
    }

    private boolean existeCliente(Cliente cliente) {
        boolean existeCliente = false;
        for (Cliente clienteDB : dbClientes){
            if (clienteDB.getDni().equals(cliente.getDni()) 
             && clienteDB.getEmail().equals(cliente.getEmail())){
                existeCliente = true;
            }
        }
        return existeCliente;
    }

    private boolean existeDatosEnBlanco(Cliente cliente) {
        boolean existeblanco = false;
        if(cliente.getEmail().equals("")
        || cliente.getFechaNac().equals("")) {
            existeblanco = true;
        }
        return existeblanco;
    }

    public boolean validaClaves2Veces(Cliente cliente, String clave2) {
        boolean ok = false;
        if(cliente.getClave().equals(clave2) ) ok = true;
        return ok;
    }

    private void actualizaTablaCliente() {
        try {
            PrintWriter pw = new PrintWriter(new FileWriter(sRutaBD));
            for( Cliente clienteDB : dbClientes){
                pw.println(clienteDB.getCodigo() + "#"
                         + clienteDB.getDni() + "#"
                         + clienteDB.getNombres() + "#"
                         + clienteDB.getEmail() + "#"
                         + clienteDB.getFechaNac() + "#"
                         + clienteDB.getClave() + "#");
            }
            pw.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    
}
